'use strict';
//define(['js/module.js','common'], function(controllers,common) {

	angular.module('usercenter.expressInfoSingle', [])
	.controller('expressInfoSingleCtrl'
			,[ '$rootScope', '$scope', '$uibModalInstance','params', 'title', 'BizData'
	                                      , f])//控制器结束
	function f($rootScope, $scope, $uibModalInstance, params, title, BizData
			) {



		var Model = this;
		

		/**
		name:bizData#onBeforeDelete
		description: <b>[回调型事件]</b>业务数据删除前
		@param {object} event 它的结构如下:<br/>
		{
			"source":组件的js对象
			,"cancel":可修改	，设置为true后中断当前delete动作
			,"deleteIDList":删除的行Id数组
		}
		*/
		Model.dataMasterBeforeDelete = function(event) {
//			alert(event.deleteIDList[0]);
		}
		/**
		name:bizData#onAfterDelete
		description: <b>[回调型事件]</b>业务数据删除后
		@param {object} event 
		<br/><b>结构如下：</b>
		<xmp> 
		{
			"source" : 组件的js对象,
			"deleteIDList" : 删除的行Id数组
		}
		</xmp>	
		*/
		Model.dataMasterAfterDelete = function(event) {
//			alert('删除之后！')
		}



		
		
		/**
		name:bizData#onIndexChanged
		description: <b>[回调型事件]</b>行记录变化
		@param {object} event 
		<br/><b>结构如下：</b>
		<xmp> 
		{
			"source" : 组件的js对象,
			"rowID" : 行Id,
			"rowIndex" : 行索引
		}
		</xmp>	
		*/
		Model.dataMasterIndexChanged = function(event) {

		}
		
		/**
		name:bizData#onDataChanged
		description: <b>[回调型事件]</b>数据发生变化（包括新增、刷新、删除、修改引起的变化），感知从data的变化
		@param {object} event 
		<br/><b>结构如下：</b>
		<xmp> 
		{
			"source" : 组件的js对象,
			"changedSource" ：触发变化的组件的js对象，当从data触发时返回从data对象,
			"selfChanged" : 是否自身变化，false：从data触发的变化,
			"type" : 触发变化的类型，包括：new、delete、refresh、valueChanged、clear，其他参数根据触发类型不同给出不同参数，参考onAfterNew等事件参数
		}
		</xmp>	
		*/
		Model.dataMasterDataChanged = function(event) {
		}
		
		/**
		name:bizData#onValueChanged
		description: <b>[回调型事件]</b>数据变化
		@param {object} event 
		<br/><b>结构如下：</b>
		<xmp> 
		{
			"source" : 组件的js对象,
			"column" : 关系,
			"rowIndex" : 行索引,
			"value" : 新值,
			"originalValue" : 旧值
		}
		</xmp>	
		*/
		//输入值变化，监视input的输入，ng-change
		Model.dataMasterValueChanged = function(event) {

		}
		


		/**
		name:bizData#onBeforeNew
		description: <b>[回调型事件]</b>业务数据新增前
		@param {object} event 它的结构如下:<br/>{"source":组件的js对象,"cancel":可修改，设置为true后中断当前new动作}
		 */
		Model.dataMasterBeforeNew = function(event) {

		};
		/**
		 * name:bizData#onAfterNew description: <b>[回调型事件]</b>业务数据新增后
		 * 
		 * @param event
		 *            它的结构如下:<br/>{"source":组件的js对象,"id":新增的行Id}
		 */
		Model.dataMasterAfterNew = function(event){

		}
		
		Model.dataMasterBeforeSave = function(event) {

		};

		Model.dataMasterAfterSave = function(event) {
			//保存成功
			$uibModalInstance.close(0);
		};
		

		
		
		var options = {};
		options.container = Model;
		options.concept = 'ExpressInfo';
		options.name = 'dataMaster';
		options.url = $rootScope.path;
		options.httpUrl = $rootScope.getServiceName();
		options.creater = '/backcenter/expressInfo/list/create';
		options.reader = '/backcenter/expressInfo/list/query';
		options.writer = '/backcenter/expressInfo/list/save';
		options.deleter = '/backcenter/expressInfo/list/delete';
		options.idColumnDefine = "fID";
		options.idColumnName = "fID";
		options.defCols = {fID:{name:"fID",type:"String",label:""},expressCode:{name:"expressCode",type:"String",label:""},expressName:{name:"expressName",type:"String",label:""},comurl:{name:"comurl",type:"String",label:""},comimgurl:{name:"comimgurl",type:"String",label:""},phone:{name:"phone",type:"String",label:""},note:{name:"note",type:"String",label:""},apiurl:{name:"apiurl",type:"String",label:""},apikey:{name:"apikey",type:"String",label:""},cUsercode:{name:"cUsercode",type:"String",label:""},cUsername:{name:"cUsername",type:"String",label:""},cDatetime:{name:"cDatetime",type:"Datetime",label:""},userId:{name:"userId",type:"String",label:""},version:{name:"version",type:"Integer",label:""}};
		options.isTree = false;
		options.parentRelation = 'fParent';
		options.nodeKindRelation = 'nodeKind';
		options.nodeLevelRelation = 'nodeLevel';
		options.pathRelation = 'fID';
		options.directDeleteMode = true;
		options.limit = 15;
		
		options.onIndexChanging = null;
		options.onIndexChanged = Model.dataMasterIndexChanged;
		options.onBeforeNew = Model.dataMasterBeforeNew;
		options.onAfterNew = Model.dataMasterAfterNew;
		options.onBeforeDelete = Model.dataMasterBeforeDelete;
		options.onAfterDelete = Model.dataMasterAfterDelete;
		options.onValueChanged = Model.dataMasterValueChanged;
		options.onDataChanged = Model.dataMasterDataChanged;
		options.onBeforeSave = Model.dataMasterBeforeSave;
		options.onAfterSave = Model.dataMasterAfterSave;
		
		$scope.dataMaster = new BizData(options);

		//监视对象中的所有变动
		$scope.dataMaster.deregRows = $scope.$watch('dataMaster.rows',$scope.dataMaster.watchRows,true);//true代表深度监视，包括对象的属性，而不是简单的一个值
		//////////////////////////////////////////////
		
		
		
		////////////////////启动执行开始///////////////////////////////////////////////////
		//接收调用的参数
		Model.params = $rootScope.$stateParams;  

		////////////////////启动执行结束///////////////////////////////////////////////////
			
		
		//////////////////////对话框使用开始//////////////////////////////////////
        //模态窗口打开之后执行的事件
        $uibModalInstance.opened.then(function(){
    		//接收调用对话框的参数
    		Model.title = title;  
    		Model.params = params;  
//    	    $scope.dataMaster.selected = {  
//    	        item: $scope.dataMaster.items[0]  
//    	    };  
    		 
    		if(Model.params.recordState=='new'){
    			$scope.dataMaster.loadData('');
	   		     var options = {
				         index : 0,
				         defaultValues : [
				             {
				            	 version:0
				            }//,
	//			             {itemNo:'a2',itemDescribe:'b2'}
				         ]
				     };    
	
				$scope.dataMaster.newData(options);
    		}
    		if(Model.params.recordState=='edit'){
//    			$scope.dataMaster.filter = "fID='"+params.id+"'";
    			$scope.dataMaster.id = Model.params.id;
    		    $scope.dataMaster.refreshData();
    		}
        });  
		 
        Model.ok = function () {  
	    	$scope.dataMaster.saveData();
	    };  
	    
	    Model.cancel = function () {  
	        $uibModalInstance.dismiss('cancel');  
	    };    
		//////////////////////对话框使用结束//////////////////////////////////////


		return Model;

		
		

	    
	    
	}
	
//});
